feat: add skill.yaml JSON Schema and example skill#1
Conversation
Defines the skill package format for FGP's composed skill layer: Schema (schemas/skill.schema.json): - Skill metadata (name, version, description, author) - Daemon dependencies with version requirements - Agent-specific instruction files - Triggers (keywords, patterns, commands) - Workflows (DAG references) - Auth requirements and permissions - Export configurations Example (examples/research-assistant/): - Complete skill package demonstrating the format - Instructions for Claude Code, Cursor, and core - Two workflow definitions (research, quick-search) - README with usage documentation Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
There was a problem hiding this comment.
Pull request overview
This PR introduces a JSON Schema specification for FGP skill packages and provides a comprehensive example demonstrating the skill package format. The schema defines the structure for Layer 1 composed skills that orchestrate daemon dependencies, workflows, and agent-specific instructions.
Changes:
- Added JSON Schema for
skill.yamlmanifest files with validation rules for metadata, dependencies, triggers, workflows, and permissions - Provided complete research-assistant example skill with multi-agent instructions and two workflow definitions
- Documented skill package structure with README and agent-specific instruction files
Reviewed changes
Copilot reviewed 8 out of 8 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| schemas/skill.schema.json | JSON Schema defining skill manifest structure with comprehensive validation rules |
| examples/research-assistant/skill.yaml | Example skill manifest demonstrating browser and gmail daemon dependencies |
| examples/research-assistant/workflows/research.yaml | Full research workflow with templating, daemon calls, and conditional email step |
| examples/research-assistant/workflows/quick-search.yaml | Simplified quick-search workflow without email functionality |
| examples/research-assistant/instructions/core.md | Agent-agnostic core instructions for the research assistant skill |
| examples/research-assistant/instructions/claude-code.md | Claude Code-specific instructions with step-by-step execution guidance |
| examples/research-assistant/instructions/cursor.md | Cursor-specific rules and command examples |
| examples/research-assistant/README.md | Documentation for installation, usage, configuration, and development |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| - click | ||
| gmail: | ||
| - send | ||
| filesystem: deny |
There was a problem hiding this comment.
The filesystem: deny entry appears under permissions.daemons, but according to the schema, the daemons property expects daemon names (like browser, gmail) mapped to either arrays of method names or the strings 'all'/'deny'. filesystem is not a daemon name and seems misplaced. If this is intended to be a permission type separate from daemons, it should be at the same level as network and subprocess in the permissions object, not nested under daemons.
| filesystem: deny | |
| filesystem: deny |
| - search | ||
| cursor: | ||
| enabled: true | ||
| rules_file: ./exports/cursor-rules.md |
There was a problem hiding this comment.
The cursor export configuration references ./exports/cursor-rules.md, but this file does not exist in the example directory structure. Either the file should be created or the reference should be updated to point to an existing file (such as ./instructions/cursor.md).
| rules_file: ./exports/cursor-rules.md | |
| rules_file: ./instructions/cursor.md |
| # Extract search results from ARIA tree | ||
| # Returns structured data with titles, URLs, snippets |
There was a problem hiding this comment.
The transform field contains only placeholder comments without actual transformation logic. While this may be acceptable for an example demonstrating the workflow format, it should either include a minimal working implementation or be clearly marked as a placeholder that needs to be implemented. Consider adding a note indicating this is example scaffolding.
| # Extract search results from ARIA tree | |
| # Returns structured data with titles, URLs, snippets | |
| # TODO: Implement extraction of search results from the browser snapshot. | |
| # This is example scaffolding only and does not perform any real transformation. | |
| # Expected output is structured data with titles, URLs, and snippets. |
- Move example skill to skills/ directory - Add tap.yaml metadata - Structure repo for use as fgp skill tap This allows the protocol repo to be used as: fgp skill tap add fast-gateway-protocol/protocol Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Summary
Adds the official FGP skills tap structure:
skill.yamlvalidationtap.yaml) for GitHub-based distributionFiles Added
Usage
Test plan
fgp skill validate skills/research-assistant/passes🤖 Generated with Claude Code